package hcn.protocol.ods.paymentXML;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import java.io.Serializable;
import java.util.List;

/**
 * @Author:FangZhiyi
 * @Description 待支付列表his返回XML数据的接收对象
 * @Data Created in 2020/11/5 10:27
 * @Moddified By:
 */

public class GetUnPayXMLResp implements Serializable {

    /**
     * patientId : 患者在 his 中的唯一标识
     * patientMedicalCardType : 诊疗卡类型
     * patientMedicalCardNumber : 诊疗卡号
     * medicalInformation : [{"whetherpay":true,"countDown":"倒计时，就诊单据有效期倒计时（单位：秒）","medicalDate":"就诊日期(yyyy-MM-dd HH:mm:ss)","doctorName":"就诊医生姓名","doctorId":"医生代码","departmentName":"就诊科室名称","deptId":"科室代码","totalCost":"合计金额(该次就诊所有单据总金额)(格式：0.00)","identificationNumber":"识别序号(单据在HIS中的唯一识别序号,多个识别序号用逗号分隔)","emergencyNumber":"就诊序号，就诊系统中每次就诊的唯一标识","medicalRemark":"就诊备注","pharmacyId":"归并发药药房识别号，多个以逗号分开并去重","mergingItems":[{"mergingCode":"归并代码(1西药费、2中药费、3草药费、4检查费、5检验费、6代煎费、7快递费等)","mergingName":"合并名称/费用归并名称(西药费、中药费、中草药费、检查费、检验费、代煎费、快递费等)","mergingSubtotal":"归并小计(格式：0.00)","mergingRemark":"归并备注","detailsItems":[{"itemName":"费用名称（中草药方的费用名称为该处方的所有药品与数量单位的拼接，把数量和单位放在英文括号中，各药品之间用四个空格分隔。比如一个中草药处方有8味药，itemName字段的值示例如下:人参(4g) 卜芥(4g) 丁香(4g) 刀豆(4g) 干姜(4g) 广白(4g) 大蓟(4g) 山丹(4g)","itemNumber":"数量（中草药方的数量为该药方的帖数,如：五帖，该字段值传：共五帖）   string","price":"单价（中草药方的单价为空）","amount":"金额（中草药方的金额为该处方的金额）","unit":"单位","specifications":"规格","itemRemark":"项目备注"}]}],"feeRecord":{"feeRecord":"收费单据","feeNo":"收费单据标识","feeTypeCode":"收费单据类型","feeType":"类型名称","feeDesc":"收费单据描述","feeDate":"费用日期","totalFee":"金额","required":"是否必选"}}]
     */

    private String SourcePatientId;
    private String MedicalCardType;
    private String MedicalCardId;
    private List<MedicalInformationBean> MedicalInformations;

    @XmlElement(name = "SourcePatientId")
    public String getSourcePatientId() {
        return SourcePatientId;
    }

    public void setSourcePatientId(String sourcePatientId) {
        SourcePatientId = sourcePatientId;
    }

    @XmlElement(name = "MedicalCardType")
    public String getMedicalCardType() {
        return MedicalCardType;
    }

    public void setMedicalCardType(String medicalCardType) {
        MedicalCardType = medicalCardType;
    }

    @XmlElement(name = "MedicalCardId")
    public String getMedicalCardId() {
        return MedicalCardId;
    }

    public void setMedicalCardId(String medicalCardId) {
        MedicalCardId = medicalCardId;
    }

    @XmlElementWrapper(name = "MedicalInformations")
    @XmlElement(name = "MedicalInformation")
    public List<MedicalInformationBean> getMedicalInformations() {
        return MedicalInformations;
    }

    public void setMedicalInformations(List<MedicalInformationBean> medicalInformations) {
        MedicalInformations = medicalInformations;
    }

    public static class MedicalInformationBean {
        /**
         * whetherpay : 是否可支付
         * medicalDate : 就诊日期(yyyy-MM-dd HH:mm:ss)
         * doctorName : 就诊医生姓名
         * doctorId : 医生代码
         * departmentName : 就诊科室名称
         * departmentId : 科室代码
         * totalFee : 合计金额(该次就诊所有单据总金额)(格式：0.00)
         * identificationNumber : 识别序号(单据在HIS中的唯一识别序号,多个识别序号用逗号分隔)
         * emergencyNumber : 就诊序号，就诊系统中每次就诊的唯一标识
         * medicalRemark : 就诊备注
         * mergingItems : [{"mergingCode":"归并代码(1西药费、2中药费、3草药费、4检查费、5检验费、6代煎费、7快递费等)","mergingName":"合并名称/费用归并名称(西药费、中药费、中草药费、检查费、检验费、代煎费、快递费等)","mergingSubtotal":"归并小计(格式：0.00)","mergingRemark":"归并备注","detailsItems":[{"itemName":"费用名称（中草药方的费用名称为该处方的所有药品与数量单位的拼接，把数量和单位放在英文括号中，各药品之间用四个空格分隔。比如一个中草药处方有8味药，itemName字段的值示例如下:人参(4g) 卜芥(4g) 丁香(4g) 刀豆(4g) 干姜(4g) 广白(4g) 大蓟(4g) 山丹(4g)","itemNumber":"数量（中草药方的数量为该药方的帖数,如：五帖，该字段值传：共五帖）   string","price":"单价（中草药方的单价为空）","amount":"金额（中草药方的金额为该处方的金额）","unit":"单位","specifications":"规格","itemRemark":"项目备注"}]}]
         * feeRecord : {"feeRecord":"收费单据","feeNo":"收费单据标识","feeTypeCode":"收费单据类型","feeType":"类型名称","feeDesc":"收费单据描述","feeDate":"费用日期","totalFee":"金额","required":"是否必选"}
         */
        private boolean whetherpay = true;
        private String VisitDateTime;
        private String DoctorName;
        private String DoctorId;
        private String DeptName;
        private String DeptCode;
        private String TotalCost;
        //        private String identificationNumber;
        private String VisitId;
        private String Remark;
        private List<MergingItemsBean> CostItemLists;


        @XmlElement(name = "whetherpay")
        public boolean isWhetherpay() {
            return whetherpay;
        }

        public void setWhetherpay(boolean whetherpay) {
            this.whetherpay = whetherpay;
        }

        @XmlElement(name = "VisitDateTime")
        public String getVisitDateTime() {
            return VisitDateTime;
        }

        public void setVisitDateTime(String visitDateTime) {
            VisitDateTime = visitDateTime;
        }

        @XmlElement(name = "DoctorName")
        public String getDoctorName() {
            return DoctorName;
        }

        public void setDoctorName(String doctorName) {
            DoctorName = doctorName;
        }

        @XmlElement(name = "DoctorId")
        public String getDoctorId() {
            return DoctorId;
        }

        public void setDoctorId(String doctorId) {
            DoctorId = doctorId;
        }

        @XmlElement(name = "DeptName")
        public String getDeptName() {
            return DeptName;
        }

        public void setDeptName(String deptName) {
            DeptName = deptName;
        }

        @XmlElement(name = "DeptCode")
        public String getDeptCode() {
            return DeptCode;
        }

        public void setDeptCode(String deptCode) {
            DeptCode = deptCode;
        }

        @XmlElement(name = "TotalCost")
        public String getTotalCost() {
            return TotalCost;
        }

        public void setTotalCost(String totalCost) {
            TotalCost = totalCost;
        }

        @XmlElement(name = "VisitId")
        public String getVisitId() {
            return VisitId;
        }

        public void setVisitId(String visitId) {
            VisitId = visitId;
        }

        @XmlElement(name = "Remark")
        public String getRemark() {
            return Remark;
        }

        public void setRemark(String remark) {
            Remark = remark;
        }

        @XmlElementWrapper(name = "CostItemLists")
        @XmlElement(name = "CostItemList")
        public List<MergingItemsBean> getCostItemLists() {
            return CostItemLists;
        }

        public void setCostItemLists(List<MergingItemsBean> costItemLists) {
            CostItemLists = costItemLists;
        }

        public static class MergingItemsBean {
            /**
             * mergingCode : 归并代码(1西药费、2中药费、3草药费、4检查费、5检验费、6代煎费、7快递费等)
             * mergingName : 合并名称/费用归并名称(西药费、中药费、中草药费、检查费、检验费、代煎费、快递费等)
             * mergingSubtotal : 归并小计(格式：0.00)
             * pharmacyId : 归并发药药房识别号
             * feeNo : 收费单据标识
             * feeTypeCode : 类型代码
             * feeTypeName : 类型名称
             * feeDesc : 收费单据描述
             * feeDate : 费用日期(yyyy-MM-dd HH:mm:ss)
             * required : 是否必选，0、可选1、必选 比如挂号费必选
             * mergingRemark : 归并备注
             * detailsItems : [{"itemName":"费用名称（中草药方的费用名称为该处方的所有药品与数量单位的拼接，把数量和单位放在英文括号中，各药品之间用四个空格分隔。比如一个中草药处方有8味药，itemName字段的值示例如下:人参(4g) 卜芥(4g) 丁香(4g) 刀豆(4g) 干姜(4g) 广白(4g) 大蓟(4g) 山丹(4g)","itemNumber":"数量（中草药方的数量为该药方的帖数,如：五帖，该字段值传：共五帖）   string","price":"单价（中草药方的单价为空）","amount":"金额（中草药方的金额为该处方的金额）","unit":"单位","specifications":"规格","itemRemark":"项目备注"}]
             */

            private String CostItemId;
            private String CostItemName;
            private String CostItemCount;
            private String PharmacyId;
            private String FeeNo;
            private String FeeTypeCode;
            private String FeeTypeName;
            private String Remark;
            private String CostDate;
            private String Required;
            /*代煎药标志，0不代煎，1代煎*/
            private Integer BoilSign;
            /**
             * 申请单编号
             */
            private String RequestId;
            //            private String mergingRemark;
            private List<DetailsItemsBean> DetailsItemLists;

            @XmlElement(name = "CostItemId")
            public String getCostItemId() {
                return CostItemId;
            }

            public void setCostItemId(String costItemId) {
                CostItemId = costItemId;
            }

            @XmlElement(name = "CostItemName")
            public String getCostItemName() {
                return CostItemName;
            }

            public void setCostItemName(String costItemName) {
                CostItemName = costItemName;
            }

            @XmlElement(name = "CostItemCount")
            public String getCostItemCount() {
                return CostItemCount;
            }

            public void setCostItemCount(String costItemCount) {
                CostItemCount = costItemCount;
            }

            @XmlElement(name = "PharmacyId")
            public String getPharmacyId() {
                return PharmacyId;
            }

            public void setPharmacyId(String pharmacyId) {
                PharmacyId = pharmacyId;
            }

            @XmlElement(name = "FeeNo")
            public String getFeeNo() {
                return FeeNo;
            }

            public void setFeeNo(String feeNo) {
                FeeNo = feeNo;
            }

            @XmlElement(name = "FeeTypeCode")
            public String getFeeTypeCode() {
                return FeeTypeCode;
            }

            public void setFeeTypeCode(String feeTypeCode) {
                FeeTypeCode = feeTypeCode;
            }

            @XmlElement(name = "FeeTypeName")
            public String getFeeTypeName() {
                return FeeTypeName;
            }

            public void setFeeTypeName(String feeTypeName) {
                FeeTypeName = feeTypeName;
            }

            @XmlElement(name = "Remark")
            public String getRemark() {
                return Remark;
            }

            public void setRemark(String remark) {
                Remark = remark;
            }

            @XmlElement(name = "CostDate")
            public String getCostDate() {
                return CostDate;
            }

            public void setCostDate(String costDate) {
                CostDate = costDate;
            }

            @XmlElement(name = "Required")
            public String getRequired() {
                return Required;
            }

            public void setRequired(String required) {
                Required = required;
            }

            @XmlElement(name = "BoilSign")
            public Integer getBoilSign() {
                return BoilSign;
            }

            public void setBoilSign(Integer boilSign) {
                BoilSign = boilSign;
            }

            public String getRequestId() {
                return RequestId;
            }

            @XmlElement(name = "RequestId")
            public void setRequestId(String requestId) {
                RequestId = requestId;
            }

            @XmlElementWrapper(name = "DetailsItemLists")
            @XmlElement(name = "DetailsItemList")
            public List<DetailsItemsBean> getDetailsItemLists() {
                return DetailsItemLists;
            }

            public void setDetailsItemLists(List<DetailsItemsBean> detailsItemLists) {
                DetailsItemLists = detailsItemLists;
            }

            @XmlAccessorType(XmlAccessType.FIELD)
            public static class DetailsItemsBean {
                /**
                 * 项目明细：中草药方一个处方一条明细，其他类型处方和检查等不做特殊处理
                 * mergingCode : 归并代码(1西药费、2中药费、3草药费、4检查费、5检验费、6代煎费、7快递费等)
                 * itemName : 费用名称（中草药方的费用名称为该处方的所有药品与数量单位的拼接，
                 * 把数量和单位放在英文括号中，各药品之间用四个空格分隔。比如一个中草药处方有8味药，itemName字段的值示例如下:人参(4g) 卜芥(4g) 丁香(4g) 刀豆(4g) 干姜(4g) 广白(4g) 大蓟(4g) 山丹(4g)
                 * itemNumber : 数量（中草药方的数量为该药方的帖数,如：五帖，该字段值传：共五帖）   string
                 * price : 单价（中草药方的单价为空）
                 * fee : 金额（中草药方的金额为该处方的金额）
                 * unit : 单位
                 * specifications : 规格
                 * itemRemark : 项目备注
                 */
                /*费用序号*/
                private String CostId;
                /*费用名称，只显示一个费用（之前是多个拼接）*/
                private String CostName;
                /*药品类型*/
                private String ItemType;
                /*数量，草药显示每贴的数量*/
                private String CostNumber;
                /*处方贴数，西药默认1*/
                private String PiecesChineseMedicineAgentNumb;
                /*单价，中草药方的单价为空*/
                private String CostPrice;
                /*金额，中草药方的金额为该处方的金额*/
                private String TotalCost;
                private String NumberUnit;
                private String DrugSpecifications;
                private String Remark;

                public String getCostId() {
                    return CostId;
                }

                public void setCostId(String costId) {
                    CostId = costId;
                }

                public String getCostName() {
                    return CostName;
                }

                public void setCostName(String costName) {
                    CostName = costName;
                }

                public String getItemType() {
                    return ItemType;
                }

                public void setItemType(String itemType) {
                    ItemType = itemType;
                }

                public String getCostNumber() {
                    return CostNumber;
                }

                public void setCostNumber(String costNumber) {
                    CostNumber = costNumber;
                }

                public String getPiecesChineseMedicineAgentNumb() {
                    return PiecesChineseMedicineAgentNumb;
                }

                public void setPiecesChineseMedicineAgentNumb(String piecesChineseMedicineAgentNumb) {
                    PiecesChineseMedicineAgentNumb = piecesChineseMedicineAgentNumb;
                }

                public String getCostPrice() {
                    return CostPrice;
                }

                public void setCostPrice(String costPrice) {
                    CostPrice = costPrice;
                }

                public String getTotalCost() {
                    return TotalCost;
                }

                public void setTotalCost(String totalCost) {
                    TotalCost = totalCost;
                }

                public String getNumberUnit() {
                    return NumberUnit;
                }

                public void setNumberUnit(String numberUnit) {
                    NumberUnit = numberUnit;
                }

                public String getDrugSpecifications() {
                    return DrugSpecifications;
                }

                public void setDrugSpecifications(String drugSpecifications) {
                    DrugSpecifications = drugSpecifications;
                }

                public String getRemark() {
                    return Remark;
                }

                public void setRemark(String remark) {
                    Remark = remark;
                }
            }
        }
    }
}
